package com.demo.java.OD501_550.OD502;

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最大利润(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146470778
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);

        // 商品数量
        int item_number = Integer.parseInt(in.nextLine());
        // 天数
        int days = Integer.parseInt(in.nextLine());

        // 每个商品的最大库存数量
        List<Integer> max_items = Arrays.stream(in.nextLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());

        // 存储每个商品在不同天数的价格
        List<ArrayList<Integer>> prices = new ArrayList<>();

        // 读取每个商品的价格序列
        for (int i = 0; i < item_number; i++) {
            List<Integer> item_price = Arrays.stream(in.nextLine().split(" "))
                    .map(Integer::parseInt)
                    .collect(Collectors.toList());
            prices.add(new ArrayList<>(item_price));  // 将每个商品的价格序列添加到列表中
        }

        // 贪心算法：计算最大利润
        int max_profit = 0;
        // 遍历每个商品
        for (int i = 0; i < prices.size(); i++) {
            int ans = 0;
            // 遍历该商品的所有天数，计算利润
            for (int j = 1; j < prices.get(i).size(); ++j) {
                // 利润 = 当前价格 - 前一天的价格，如果为正则累加
                ans += Math.max(0, prices.get(i).get(j) - prices.get(i).get(j - 1));
            }
            // 累加该商品的利润 * 库存数
            max_profit += ans * max_items.get(i);
        }

        // 输出最大利润
        System.out.println(max_profit);
    }
}